import vuex from 'vuex'
import vue from 'vue'

vue.use(vuex);
const store = new vuex.Store({
    state: {
        tableData: [{
            id: '1',
            name: '苏落',
            age: 19,
            child: '1',//1 独生子女 2 非独生
            account: '1',//1 城市户口 2 农村户口
            phone: '17752750628',//手机号码
            identity: '431022200022229292',//身份证号码
            address: '上海市路 1518 弄',//地址
            vaccine: '1',//1 已接种疫苗   2 未接种疫苗
        },],
    },

    //state里面的数据只能通过mutations修改
    //mutations里面的方法 需要在组件里面 通过this.$store.commit('changeNum',1)调用
    //this.$store.commit()函数需要两个参数  第一个就是 调用的方法名 第二个 就是	传给方法的参数
    mutations: {
        addTableData(state, arg) {
            state.tableData.push(arg)
        },
        ediTableData(state, arg) {
            state.tableData = state.tableData.map(item => item.id === arg.id ? arg : item)
        },
        deleteTableData(state, arg) {
            state.tableData = state.tableData.filter(item => !arg.includes(item.id))
        }
    },
    //从里面可以得到 state里面的数据 计算过后的结果
    getters: {
        cityNum: state => state.tableData.reduce((total, item) => item.account === '1' ? total + 1 : total, 0),
        childNum: state => state.tableData.reduce((total, item) => item.child === '1' ? total + 1 : total, 0),
        ageNum: state => state.tableData.reduce((total, item) => item.age >= 18 ? total + 1 : total, 0),
        vaccineNum: state => state.tableData.reduce((total, item) => item.vaccine === '1' ? total + 1 : total, 0),

    },
})


export default store